﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.Common.Validation;
using Sinacor.Infra.Common.Exceptions;
using Sinacor.Infra.Service.ExceptionHandling;
using Sinacor.Infra.Service.Validation;
using Sinacor.Infra.Service.Validation.BusinessRules;

namespace Sinacor.Servico.Bovespa.ManutencaoOrdens.BusinessLogic.BusinessRulesValidation
{
    public class ClienteBloqueioCadastrado : BaseBusinessRuleValidation<BusinessEntity.Bloqueio>, IBusinessRuleValidation
    {

        #region Atributos
        private int _erroClienteNaoCadastro = 109768;
        #endregion

        #region Propriedades
        public int ErroClienteNaoCadastrado
        {
            get { return _erroClienteNaoCadastro; }
            set { _erroClienteNaoCadastro = value; }
        }
        #endregion

        #region IBusinessRuleValidation Members

        public List<ValidationError> GetErrors()
        {
            return base.ErrorsList;
        }

        public void Validate()
        {
            if (base.EntityToValidate.Cliente != null && base.EntityToValidate.Cliente.Codigo.HasValue)
            {
                Sinacor.Servico.Bovespa.Cliente.BusinessLogic.Cliente blCliente = new Sinacor.Servico.Bovespa.Cliente.BusinessLogic.Cliente();
                Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Parameter.ConsultarClientePorCodigo filtro = new Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Parameter.ConsultarClientePorCodigo();
                filtro.CodigoCliente = base.EntityToValidate.Cliente.Codigo.Value;

                Sinacor.Servico.Bovespa.Cliente.BusinessEntity.Cliente cliente = blCliente.ConsultarClientePorCodigo(filtro);

                if (cliente == null || cliente.Codigo == 0)
                    base.AddValidationError(ErroClienteNaoCadastrado);
            }
        }

        #endregion
    }
}
